package helper

import (
	go_logger "github.com/phachon/go-logger"
)

/*
日志操作
*/

/*
update insert 存储过程出错 的日志写在 EMERGENCY
select 出错 写在 CRITICAL
*/
var loggerInstance *go_logger.Logger

func GetloggerInstance() *go_logger.Logger {
	return loggerInstance
}

func InitLog() {
	logger := go_logger.NewLogger()

	// 文件输出配置
	fileConfig := &go_logger.FileConfig{
		Filename: "./log/test.log", // 日志输出文件名，不自动存在
		// 如果要将单独的日志分离为文件，请配置LealFrimeNem参数。
		LevelFileName: map[int]string{
			logger.LoggerLevel("EMERGENCY"): "./log/emergency.log",
			logger.LoggerLevel("ALERT"):     "./log/alter.log",
			logger.LoggerLevel("CRITICAL"):  "./log/critical.log",
			logger.LoggerLevel("WARNING"):   "./log/warning.log",
			logger.LoggerLevel("NOTICE"):    "./log/notice.log",
			logger.LoggerLevel("INFO"):      "./log/info.log",
			logger.LoggerLevel("DEBUG"):     "./log/debug.log",
			logger.LoggerLevel("ERROR"):     "./log/error.log",
		},
		MaxSize:    0,     // 文件最大值（KB），默认值0不限
		MaxLine:    0,     // 文件最大行数，默认 0 不限制
		DateSlice:  "d",   // 文件根据日期切分， 支持 "Y" (年), "m" (月), "d" (日), "H" (时), 默认 "no"， 不切分
		JsonFormat: false, // 写入文件的数据是否 json 格式化
		Format:     "",    // 如果写入文件的数据不 json 格式化，自定义日志格式
	}
	// 添加 file 为 logger 的一个输出
	logger.Attach("file", go_logger.LOGGER_LEVEL_DEBUG, fileConfig)

	loggerInstance = logger
}

// update,insert,存储过程出错
func SqlErrLog(format string, a ...interface{}) {
	GetloggerInstance().Emergencyf(format, a...)
}

// select 出错
func SqlSelectErrLog(format string, a ...interface{}) {
	GetloggerInstance().Criticalf(format, a...)
}

func InfoLog(format string, a ...interface{}) {
	GetloggerInstance().Infof(format, a...)
}
